﻿using System;
using System.Collections.Generic;
using System.Linq;
using Capa_Entidad;
namespace Acceso_Datos.Clases_DAO
{
    public class clsAdmCitaDao
    {
        private BDClinicaEntities ContextoDeObjs = new BDClinicaEntities();
        public bool Insertar(ADM_CITA Obj)
        {
	        try 
            {
                ContextoDeObjs.AddObject("ADM_CITA", Obj);
                ContextoDeObjs.SaveChanges();
                return true;
	        } 
            catch (Exception)
            {
		        return false;
	        }
        }
        public bool Modificar(ADM_CITA obj)
        {

            try
            {
                ContextoDeObjs.AttachTo("ADM_CITA", obj);
                ContextoDeObjs.ObjectStateManager.ChangeObjectState(obj, System.Data.EntityState.Modified);
                ContextoDeObjs.SaveChanges();
                return true;
            }
            catch (Exception)
            {
                return false;

            }
        }
        public bool Eliminar(ADM_CITA obj)
        {
            try
            {
                ContextoDeObjs.AttachTo("ADM_CITA", obj);
                ContextoDeObjs.DeleteObject(obj);
                ContextoDeObjs.SaveChanges();
                return true;
            }
            catch (Exception)
            {
                return false;
            }
        }
        public List<ADM_CITA> listar()
        {
	        List<ADM_CITA> lista = new List<ADM_CITA>();
            var q = from c in ContextoDeObjs.ADM_CITA
                    select c;
	        lista = q.ToList();
	        return lista;
        }
        public List<V_Adm_Cita> listarVista()
        {
            List<V_Adm_Cita> lista = new List<V_Adm_Cita>();
            var q = from c in ContextoDeObjs.V_Adm_Cita
                    orderby c.CIT_FECHA descending
                    select c;
            lista = q.ToList();
            return lista;
        }
        public List<V_Horario_Cita> listarHorario()
        {
            List<V_Horario_Cita> lista = new List<V_Horario_Cita>();
            var q = from c in ContextoDeObjs.V_Horario_Cita
                    select c;
            lista = q.ToList();
            return lista;
        }

        public int UltimoNumero()
        {
            var max = 0;

            try
            {
                 max = ContextoDeObjs.ADM_CITA.Select(x => x.CIT_ID_CITA).Max();
                return max;
            }
            catch (Exception)
            {
                return max;
            }
           

        }
        public List<ADM_CITA> obtenerDatosCita(int idcita)
        {
            List<ADM_CITA> lista = new List<ADM_CITA>();
            var q = from c in ContextoDeObjs.ADM_CITA
                    where c.CIT_ID_CITA == idcita
                    select c;
            lista = q.ToList();
            return lista;
        }
        public bool ActualizarEstadoCita(int IdCita,int estado) {
            try
            {
                ContextoDeObjs.ExecuteStoreCommand("UPDATE ADM_CITA SET ESC_ID_ESTADO_CITA='" + estado + "' WHERE CIT_ID_CITA='" + IdCita + "'");
                return true;
            }
            catch(Exception) {
                return false;
            }
        }
        public List<V_LISTA_CITAS> ListaCitaAtencion(int IdAtencion) {
            List<V_LISTA_CITAS> lista = new List<V_LISTA_CITAS>();
            try {
               
                var q = from c in ContextoDeObjs.V_LISTA_CITAS
                        where c.ATE_ID_ATENCION == IdAtencion
                        select c;
                lista = q.ToList();
                return lista;
            }catch {

                return lista;
            }
            
        }
        public List<CIT_ESTADO_CITA> ListarEstadoCita() {

            List<CIT_ESTADO_CITA> lista = new List<CIT_ESTADO_CITA>();
            try {
                var q = from c in ContextoDeObjs.CIT_ESTADO_CITA
                        select  c ;
                lista = q.ToList();
                return lista;
            }
            catch {
                return lista;
            }
          
        }

    }
}
